An ATM network passes data of all types in the form of small, fixed data size cells which do not carry the full data address, but instead have a cell header which carries data identifying only the virtual path and virtual channel for the next switching stage. The virtual path identifier and virtual channel identifier (VPI/VCI) are written to the header at each switching stage according to the virtual path and channel established by the initial switching request. Data identifying the switching virtual path and channel are stored in a switch when a request is made, and these data are used to set the VPI/VCI for each cell during the switching process.
An ATM switch comprises, in general terms, a plurality of link controllers each connected via an input port and an output port to a switch fabric which switches data cells from any input port to any output port. Each link controller has a plurality of data links connected to it. The link controllers comprise input controllers or receivers, whose principal function is simply to receive the bit stream from the external link and to divide it up into cells for presentation to the cell fabric, and output controllers or transmitters, which serve to convert the separate cells from the switch fabric into a continuous bit stream again for forwarding on the appropriate external link.
Typically, data communication will be in the form of singlecast. An commonplace example of singlecast communication is a normal two-party telephone call. The voice of one caller is transferred to the other party and no other. In many data networks, there is increasingly a need for multicast data communication, in which the same data are sent simultaneously to selected stations in the network. The extreme of multicast is broadcast, in which all stations receive the same data, in the same way that television and radio transmissions are broadcasts which anybody with the necessary receiver can receive.
In the case of a point to point ATM connection, cells are relayed from the source to the target without being duplicated, while in a multicast connection, cells from the source are replicated within the network and then separately routed to each destination in turn. Broadcast is the ultimate case, where each cell is copied to each possible destination. Clearly, in any real network, broadcast must be used sparingly.
In ATM multicast, the cells must not only be replicated in the ATM switch, but must also have the correct VPI/VCI assigned to the header for each copy of the cell. These will be different for each cell, since the destinations will all be different. A problem which arises in seeking to implement multicast in ATM networks is that of achieving sufficient speed to avoid the switch becoming a "bottle neck" introducing a delay in the forwarding of the data cells.
Various approaches to multicast switching have been considered. For example, replication of multicast cells can be done at the input stage to the switch, with the copies thus produced then being passed through the switch fabric. A problem with this approach is that the switch fabric itself introduces delays. Alternatively, a copy network could be added to the front of the switch fabric, taking over most of the functions of the input controllers in looking up the VPI/VCI. However, ATM does not permit the sequence of cells to be indicated in the headers; input and output must be in the correct order. This introduces complexity into the copy network and can still give problems with delays.
Another possibility is to use a bus connection between the inputs and the outputs, with the output controllers determining whether a cell on the bus is of interest, and rewriting the VPI/VCI for each cell accordingly. A principal problem with this approach is that the bus must be very fast to compensate for the fact that only one input can "talk" on the bus at any one time. The connections to the bus must therefore run very fast. Delays still arise with this approach.
To try to overcome the problems of a bus, while still retaining the advantages, a ring could be used. This would avoid the "one-at-a-time" limitation of the bus, and would therefore permit the speed to increase. However, rings are very susceptible to failure.